package com.service.admin.product.controller.req;

import com.service.dao.enums.CoinsEnum;
import com.service.dao.enums.LanguageEnum;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * <dl>
 * <dt>back-end</dt>
 * <dd>Description:</dd>
 * <dd>Copyright: Copyright (C) 2015</dd>
 * <dd>Company: </dd>
 * <dd>CreateDate: 2019年11月12日</dd>
 * </dl>
 *
 * @author
 */
@Getter
@Setter
@ToString
public class HashRateComboAddReq {

    private Integer id;
    /**
     * 套餐名称
     */
    @NotBlank(message = "套餐名称不能为空")
    private String comboName;
    /**
     * 套餐单价
     */
    @NotNull(message = "套餐单价不能为空")
    @Min(value = 0, message = "套餐单价不能低于0")
    private BigDecimal comboPrice;
    /**
     * 期限，单位:天
     */
    @NotNull(message = "套餐期限不能为空")
    @Min(value = 0, message = "套餐期限不能低于0")
    private Integer deadline;
    /**
     * 算力,单位:T
     */
    @NotNull(message = "套餐算力不能为空")
    @Min(value = 0, message = "套餐算力不能低于0")
    private BigDecimal computingPower;
    /**
     * 固定收益百分比，单位:%
     */
//    @NotNull(message = "套餐固定收益不能为空")
//    @Min(value = 0, message = "套餐固定收益不能低于0")
    private BigDecimal flexedNum;
    /**
     * 浮动收益，单位:%
     */
//    @NotNull(message = "套餐浮动收益不能为空")
//    @Min(value = 0, message = "套餐浮动收益不能低于0")
    private BigDecimal floatingNum;

    @Min(value = 1, message = "起购数量不能低于1")
    private Integer minBuyNum;

    @NotNull(message = "套餐类型不能为空")
    private Integer comboType;

    @NotNull(message = "产出货币不能为空")
    private CoinsEnum coins;

    /**
     * 库存数量
     */
    @NotNull(message = "套餐库存数量不能为空")
    @Min(value = 0, message = "套餐库存数量不能低于0")
    private Integer stock;
    /**
     * 产品标签，使用$符号分割
     */
    private String comboTag;

    @NotNull(message = "套餐语言类型不能为空")
    private LanguageEnum comboLanguage;
    /**
     * 封装所需天数数 经过X天后生效、产生收益
     */
//    @NotNull(message = "封装时间不能为空")
    private Integer packageDays;

    @NotNull(message = "购买说明不能为空")
    private String descOne;
    @NotNull(message = "产品介绍不能为空")
    private String descTwo;
    @NotNull(message = "风险提示不能为空")
    private String descThree;
    @NotNull(message = "常见问题不能为空")
    private String descFour;
    /**
     * 管理手续费比例
     */
    @Min(value = 0, message = "管理手续费不能低于0")
    private BigDecimal custodyFee;

    /**
     * 是否限购，空为不限购
     */
    @Min(value = 0, message = "限购数量不能低于0")
    private Integer limitBuyNum;

    /**
     * 是否推广 0-否 1-是
     */
    private Integer isPopularize;

    /**
     * 续约新增需求字段
     */
    @NotNull(message = "购买货币不能为空")
    private CoinsEnum fromCoins;

    /**
     * 是否续约 0-否 1-是
     */
    private Integer needRenew;

    /**
     * 续约天数
     */
    private Integer renewalDays;

    /**
     * 是否需要质押FIL 0-否 1-是
     */
    private Integer needPledge;
    /**
     * 质押数量
     */
    private BigDecimal pledgeNum;

    /**
     * 是否需要FIL gas费
     */
    private Integer needGas;
    /**
     * FIL所需gas数量
     */
    private BigDecimal GasNum;

    /**
     * 是否需要usdt
     */
    private Integer needUsdt;

    /**
     * usdt数量
     */
    private BigDecimal usdtNum;

    private String sector;
}
